import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel数据，并将Stkcd列的数据类型指定为字符串
data = pd.read_excel('trd_2017.xlsx', dtype={'Stkcd': str})


# -------- 分析1---------------------
# 将Trddt列转换为日期格式
data['Trddt'] = pd.to_datetime(data['Trddt'], format='%Y-%m-%d')

# 对数据按照Stkcd和Trddt进行排序
data = data.sort_values(['Stkcd', 'Trddt'])

# 计算每个公司每天的增长率
data['growth_rate'] = (data['Clsprc'] - data['Clsprc'].shift(1)) / data['Clsprc']

# 计算每个公司的平均增长率
average_growth_rate = data.groupby('Stkcd')['growth_rate'].mean()

# 按照平均增长率取出前十的公司
top_10_companies = average_growth_rate.nlargest(10)

# 打印结果
for stkcd, growth_rate in top_10_companies.items():
    print(f"{stkcd}: {growth_rate * 100:.2f}%")

plt.figure(figsize=(15,8))
plt.bar(top_10_companies.index, top_10_companies * 100)
plt.xlabel('company')
plt.ylabel('avg rate（%）')
plt.title('top 10')
plt.show()



# -------- 分析2---------------------
# 将Trddt列转换为日期格式
# data['Trddt'] = pd.to_datetime(data['Trddt'], format='%Y-%m-%d', errors='coerce')
#
# # 按月份（Y-M）对数据进行分组
# data['YearMonth'] = data['Trddt'].dt.to_period('M')
# grouped_data = data.groupby(['YearMonth'])
#
# # 计算每个月的收盘价总和
# result = grouped_data['Clsprc'].sum()
#
# # 将Period类型的索引转换为字符串类型
# result.index = result.index.astype(str)
#
# # 画出折线图
# plt.figure(figsize=(15,8))
# plt.plot(result.index, result.values)
# plt.xlabel('Month')
# plt.ylabel('Total Closing Price')
# plt.show()
